Until recently, the electromagnetic spectrum was considered as separated into two large bands. The first band includes the usual frequencies used for wireless communications and referred to as the “radio” waves. The radio waves are electromagnetic radiations having frequencies from 3 KHz up to 300 GHz. The second band starts from around 1 THz, includes radiations of the “optic” type and encompasses the infrared band, the visible band, Ultraviolet, X-Rays and the Gamma rays. The second band, referred to as the “terahertz” band that contains frequencies ranging from 100 GHz up to 10 THz and thus includes a part of the radio electromagnetic radiations and a part of the optic electromagnetic radiations.
The terahertz band is nowadays of particular interest and is considered for ultra-high speed wireless communications notably because of its large available bandwidth. Several values can be considered for the frontiers of the terahertz band. However, two bands are often used for defining the terahertz band: 100 GHz up to 10 THz and 0.3 GHz up to 3 THz.
The large available bandwidth is not the only reason why terahertz waves are of interest. The integration level and particularly the size of the antennas used for emitting and receiving such waves make this technology very easy to be integrated in the current common communication devices that are made increasingly smaller and/or thinner nowadays. Thanks to this easy integration, several applications are made possible, from ultra-high speed audio/image/video transfer between devices to intra-machine communications (i.e. wireless communication between two or more components within a same device).
However, many challenges have to be faced before bringing the terahertz communication technology to the market. The terahertz technology is not entirely mature yet even though solutions for terahertz detection at room temperature exist as disclosed in document Kallfass et al. “All Active MMIC-Based Wireless Communication at 220 GHz”. IEEE Transactions on Terahertz Science and Technology Vol 1, Number 2, November 2011 or document Hiwei Xu et al. “D-Band CMOS Transmitter and Receiver for Multi-Giga-Bit/sec Wireless Data Link”. 40th European Microwave Conference, September 2010.
Solutions for terahertz wave generation (at room temperature) with sufficient power for transmission at distances over the meter remain scarce for the moment. Experiments have been performed wherein only amplitude modulation has been used. However, phase modulation, in particular in heterodyne architectures, has not been experimented yet.
Reliable modular interconnection of terahertz hardware devices are missing in the prior art.
Finally, the efficiency of the antennas integrated on silicon that has been reported so far is poor. This last issue seems to be the one for which the biggest progress is to be accomplished.
In parallel to the effort in conceiving terahertz transmitters and receivers capable of transmitting and receiving wideband modulated signals, the research community works also on the terahertz electromagnetic propagation modeling. For the terahertz waves, like for radio waves, knowing the propagation model is mandatory to well conceive and dimension the communication systems, mainly for the digital part (Modulation and coding scheme) and the antenna design. Only a few models are currently proposed for the terahertz propagation. Document Kallfass et al. “All Active MMIC-Based Wireless Communication at 220 GHz”. IEEE Transactions on Terahertz Science and Technology Vol 1, Number 2, November 2011 discloses using one of the first models, which has been developed by the HSCA (Harvard-Smithsonian Center for Astrophysics). The model, which is available under a freeware that can be downloaded from the HSCA website, is called “am” for Atmospheric Model. The “am” model makes it possible to perform radiative transfer computations from microwave to sub-millimeter wavelengths. With this model, one can see that above around 350 GHz for example, the humidity has no effect and the attenuation is more severe. This “am” model is available for outdoor and for long distances.
Recently, some measurements and modeling have been carried out in order to determine the propagation behavior of the terahertz waves during specific scenarios completely different from the scenarios considered when building the “am” model. Document Sebastian Rey et al. “On Propagation Characteristics of Waveguide-like ABS-structures in 60 GHz and 300 GHz communications”. IRMMW THz 2013, Mainz, Germany and document Alexander Fricke et al. “Reflection and transmission properties of plastic materials at THz frequencies”. IRMMW THz 2013, Mainz, Germany report investigations concerning the behavior of the terahertz waves in indoor and intra-machine communication systems in order to characterize and determine the way terahertz waves propagate in such environment.
Document A. X. Widmer, P. A. Franaszek, “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code”, IBM Journal of Research and development, vol. 27, No. 5, September 1983, pp. 440-451 discloses one of the most popular DC free code. The proposed scheme, called “8B10B” encodes each 8 bits of a digital data stream into 10 bits plus a “status information” obtained from the previous encoding. The idea is to continuously balance between the ones (“1”) and the zeros (“0”) so that at each time the encoded bitstream has exactly the same number of ones and the number of zeros. With such continuous balancing, the bitstream has a null mean value (it has no continuous component), it is said to be “DC free”.
The “DC free” encoding modifies the inputted bitstream into an output bitstream having a bounded digital sum variation. The digital sum variation (DSV) is computed from the running digital sum (RDS) as follows (after modulating the bitstream with 1 and −1):
  RDS  =            ∑              n        =        I            J        ⁢                  ⁢          y      n      
The digital sum variation is computed according to the following formula:
  DSV  =                    max                  I          ,          J          ,                      {                          y              n                        }                              ⁢                      RDS                      =                  max                  I          ,          J          ,                      {                          y              n                        }                              ⁢                                            ∑                          n              =              I                        J                    ⁢                                          ⁢                      y            n                                      I and J are integers and yn are the bits of the bitstream.
For the encoding, the bitstream is subdivided into blocks of 8 bits (one byte) and presented to the encoder. Each byte is then subdivided into two sub-blocks: one sub-block comprising the five first bits and one sub-block comprising the last three bits. The first five bits are encoded using a 5b/6b code thereby obtaining 6 bits. The 5b/6b encoding is based on two tables. A first table contains codewords having more ones than zeros (or the same number of ones and zeros for some codewords in the table). A second table contains codewords having more zeros than ones (or the same number of ones and zeros for some codewords in the table).
The tables used for the 5b/6b encoding disclosed in document A. X. Widmer, P. A. Franaszek, “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code”, IBM Journal of Research and development, vol. 27, No. 5, September 1983, pp. 440-451. are listed below. In table “table_5b_6b_RD_plus”, codewords have a number of zeros at least equal to the number of ones. In table “table_5b_6b_RD_minus”, the codewords have a number of ones at least equal to the number of zeros.
table_5b_6b_RD_plus=[0 1 1 0 0 0;                1 0 0 0 1 0;        0 1 0 0 1 0;        1 1 0 0 0 1;        0 0 1 0 1 0;        0 0 0 1 1 0;        1 0 0 1 0 1;        0 1 0 1 0 1;        1 1 0 1 0 0;        0 0 1 1 0 1;        1 0 1 1 0 0;        0 1 1 1 0 0;        1 0 1 0 0 0;        1 0 0 1 0 0;        1 0 0 0 1 1;        0 1 0 0 1 1;        1 1 0 0 1 0;        0 0 1 0 1 1;        1 0 1 0 1 0;        0 1 1 0 1 0;        0 0 0 1 0 1;        0 0 1 1 0 0;        1 0 0 1 1 0;        0 1 0 1 1 0;        0 0 1 0 0 1;        0 0 1 1 1 0;        0 1 0 0 0 1;        1 0 0 0 0 1;        0 1 0 1 0 0];        
table_5b_6b_RD_minus=[1 0 0 1 1 1;                0 1 1 1 0 1;        1 0 1 1 0 1;        1 1 0 0 0 1;        1 1 0 1 0 1;        1 0 1 0 0 1;        0 1 1 0 0 1;        1 1 1 0 0 0;        1 1 1 0 0 1;        1 0 0 1 0 1;        0 1 0 1 0 1;        1 1 0 1 0 0;        0 0 1 1 0 1;        1 0 1 1 0 0;        0 1 1 1 0 0;        0 1 0 1 1 1;        0 1 1 0 1 1;        1 0 0 0 1 1;        0 1 0 0 1 1;        1 1 0 0 1 0;        1 1 1 0 1 0;        1 1 0 0 1 1;        1 0 0 1 1 0;        0 1 0 1 1 0;        1 1 0 1 1 0;        0 0 1 1 1 0;        1 0 1 1 1 0;        0 1 1 1 1 0;        1 0 1 0 1 1];        
The tables used for the 3b/4b encoding disclosed in document A. X. Widmer, P. A. Franaszek, “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code”, IBM Journal of Research and development, vol. 27, No. 5, September 1983, pp. 440-451. are listed below. In table “table_3b_4b_RD_plus”, the codewords have a number of zeros at least equal to the number of ones. In table “table_3b_4b_RD_minus”, the codewords have a number of ones at least equal to the number of zeros.
table_3b_4b_RD_plus=[0 1 0 0;                1 0 0 1;        0 1 0 1;        0 0 1 1;        0 0 1 0;        1 0 1 0;        0 1 1 0;        0 0 0 1;        1 0 0 0];        
table_3b_4b_RD_minus=[1 0 1 1;                1 0 0 1;        0 1 0 1;        1 1 0 0;        1 1 0 1;        1 0 1 0;        0 1 1 0;        1 1 1 0;        0 1 1 1];        
Let's consider encoding of the following byte: 0 0 0 0 1 0 0 1. The encoded word would be:                0 1 1 0 0 0 1 0 1 1 when the initial running disparity is equal: +1;        1 0 0 1 1 1 0 1 0 0 when the initial running disparity is equal: −1.        
The running disparity is defined in document A. X. Widmer, P. A. Franaszek, “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code”, IBM Journal of Research and development, vol. 27, No. 5, September 1983, pp. 440-451. It is defined as the number of ones minus the number of zeros for each encoded 6 bits (respectively 4 bits) at the output of the 5b/6b (respectively the 3b/4b) encoder.
If the running disparity is equal to +1, the byte to be encoded (i.e. 0 0 0 0 1 0 0 1; see the example above) is divided into two parts: five first bits (i.e. 0 0 0 0 1) and three last bits (i.e. 0 0 1).
In the present example, the running disparity is equal to +1, then the 5b/6b encodes the five first bits with: 0 1 1 0 0 0 (since 0 0 0 0 1 corresponds to 1 in decimal so the first word in the table is selected as 5b/6b codeword). The new running disparity is thus equal to: +1+(2−4)=−1 (+1 is the previous/initial running disparity and (2−4) is the running disparity of the encoded word (0 1 1 0 0 0).
Since the updated running disparity is equal to −1, table table_3b_4b_RD_minus is used for the 3b/4b encoding. The output is equal to: 1 0 1 1. For each byte to be encoded two codewords are possible (positive or negative running disparity).
In document D. Y. Young Kim et al. “White paper on the MB810 Line Code for 10 GbE”, proposal for 10 Gigabit Ethernet (IEEE 802.3), document S. Kang et al. “MB810, Dual mode Encoder/Decoder, and MB810 code generating method” and document US2005/0012646 the authors disclosed a new line coding scheme providing a spectrum having null power at the null frequency and a null power at the Nyquist frequency (i.e. half the sampling frequency), other words a “DC free” and “Nyquist free” line code.
A code parameter called “running alternate sum” (RAS) is considered for building the code:
  RAS  =            ∑              n        =        I            J        ⁢                  ⁢                            (                      -            1                    )                n            ⁢              y        n            
I and J are integers, yn are the bits of the bitstream. The RAS is the sum of the coded output symbols within an arbitrary interval between tn=I and n=J, with alternating polarity. Similarly to the Running Digital Sum, a parameter named “Alternative Sum Variation” (ASV) is computed according to the following equation:
  ASV  =                    max                  I          ,          J          ,                      {                          y              n                        }                              ⁢                      RAS                      =                  max                  I          ,          J          ,                      {                          y              n                        }                              ⁢                                            ∑                          n              =              I                        J                    ⁢                                          ⁢                                                    (                                  -                  1                                )                            n                        ⁢                          y              n                                                  
If the ASV is finite, then the bitstream yn has a spectrum component null at the Nyquist frequency.
For example, let's consider the binary sequence “1100”, the DS (Digital Sum) computation gives:DS=1+1−1−1=0
The AS (Alternate Sum) is:AS=−1+1+1−1=0
The DS and the AS of the above binary sequence are null. In addition, shifting this binary sequence, as explained below, provides the same values for AS and DS:“1001”=>DS=1−1−1+1=0AS=−1−1+1+1=0“0011”=>DS=−1−1+1+1=0AS=+1−1−1+1=0“0110”=>DS=−1+1+1−1=0AS=+1+1−1−1=0
The line code MB24 has the following codebook {1100,1001,0011,0110}. The MB24 line code is thus a DC free and Nyquist free line code. The MB24 encoding is defined by the table below:
UncodedwordCodeword001001010011101100110110
Decoding a MB24 line code is straightforward. Indeed, one can see from the above table that the two bits in the middle of each codeword correspond to the uncoded word. The decoder architecture is very simple.
Similar construction can be done in order to design the MB12 and the MB34 line codes.
The following table illustrates the encoding process for the MB12 code:
StateInputOutputNext stateS1011S4S1101S2S2011S3S2110S1S3000S2S3110S4S4000S1S4101S3
The MB12 encoder is initialized to state S1 and then according to the input bit and the table above two output bits are selected and the current state of the encoder is updated.
The following table illustrates the encoding process for the MB34 code:
StateInputOutputNext stateS10000011S1S10010110S1S10101001S1S10111100S1S11001011S2S11011111S3S11101101S4S11110111S4S20000011S2S20010110S2S20101001S2S20111100S2S21000001S1S21010100S1S21101101S3S21110101S4S30000011S3S30010110S3S30101001S3S30111100S3S31000000S1S31010010S2S31101000S2S31110100S4S40000011S4S40010110S4S40101001S4S40111100S4S41000010S1S41011010S2S41101110S3S41111011S3
The MB34 encoder is initialized to state S1 and then according to three input bits and the table above, four output bits are selected and the current state of the encoder is updated.
An example of the MB810 is illustrated and deeply discussed in document S. Kang et al. “MB810, Dual mode Encoder/Decoder, and MB810 code generating method” and document US2005/0012646.
Other codes are disclosed in the prior art that deal with the DC free or DC free and Nyquist free characteristics.
The code proposed in document M-C. Chiu, “DC Free Error Correcting Codes Based on Convolutional Codes”, IEEE Transaction on Communications, Vol. 49, N. 4, April 2001 uses the convolutional codes for building a DC free error correcting code. This code is built by preforming an XOR operation between two convolutional codes. It is thus a linear combination of these two codes.
The first convolutional code is used in order to encode the uncoded sequence. Let's consider a(D) as the source input (represented in the polynomial format), x(d) being the encoded sequence and G1(D) the polynomial generator matrix of the first convolutional code. The first operation is to perform the encoding: x(D)=a(D). G1(D). A second step is to perform a second encoding based on a second convolutional code. In this second step, the Viterbi algorithm is performed on the trellis of the second convolutional code in order to find a codeword b(D) (b(D) is a codeword belonging to the second convolutional code codebook). The codeword b(D) is then added to the codeword x(D):y(D) =x(D)+b(D)=a(D) G1(D)+u(D) G2(D)=[a(D) u(D)]. [G1(D) G2(D)]T
At the decoder side, the classical Viterbi Algorithm is applied on the received sequence by using the trellis of the following code: G(D)=[G1(D) G2(D)]T. This method generates a DC free Error Code and can be applied with many convolutional codes. The performances depend on the characteristics of the selected convolutional codes. A list of preferable convolutional codes, for both C1 and C2, is disclosed in document M-C. Chiu, “DC Free Error Correcting Codes Based on Convolutional Codes”, IEEE Transaction on Communications, Vol. 49, N. 4, April 2001 in two tables.
The code disclosed in document J. G. Kim, “An improved DC free Nyquist free Error Control Line Code”, ICCS'94, November 1994, Singapore uses the extended Hamming code for building a “DC free” and “Nyquist free” error correcting code.
The (8,4) extended Hamming code has some interesting characteristics since 12 among 16 of the codebook codewords have a null running digital sum and a null alternate digital sum as shown in the table below.
Uncoded wordCodewordDSAS000000000000−800001110100100000100101010108001110000111000100100110010001010100101100011011001100000111000111100010001110000100100100110011001010101101000010110110011000110001111000001101101010100−81110001011010011111111111180
In document J. G. Kim, “An improved DC free Nyquist free Error Control Line Code”, ICCS'94, November 1994, Singapore, the idea is to build a new code starting from a part of the codewords listed in the above table. Twelve of these codewords have a null DS and a null AS. Thus, a table containing 144 codewords of 16 bits can be built by concatenating two by two the codewords of the table. This new table contains 144 codewords of 16 bits, each one having a null running digital sum and a null running alternate sum. A third table is obtained by selecting only 128 codewords out of 144 codewords of the second table. With this third table having 128 codewords, one can encode a seven bits word to a 16 bits codeword belonging to the third table (since 27=128). The coding rate that is obtained is 7/16=0.4375.
However, there is still a need for new DC free and Nyquist free line coding with error correction capabilities.
The present invention lies within this context.